/**
 *       Copyright (c) 2012 Lukas Zaruba
 *
 *   This file is part of Robot Playground.
 *
 *   Robot Playground is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU Lesser General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   Robot Playground is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Lesser General Public License for more details.
 *
 *   You should have received a copy of the GNU Lesser General Public License
 *   along with Robot Playground. If not, see <http://www.gnu.org/licenses/>.
 */
package net.zarubsys.commons.scripting;

/**
 * Based on scripting language from Media Solutions Slovakia, a.s.
 * @author Lukas Zaruba, lukas.zaruba@gmail.com
 */
public class ScriptLocator {
    
	private final String fileName;
	private final int lineNumber;
	private final int characterNumber;

	public ScriptLocator(String fileName, int lineNumber, int characterNumber) {
		if (lineNumber < 1) throw new IllegalAccessError("Line number must be positive number, now is " + lineNumber);
		if (characterNumber < 1) throw new IllegalAccessError("Character number must be positive number, now is " + characterNumber);
		
        this.fileName = fileName;
        this.lineNumber = lineNumber;
        this.characterNumber = characterNumber;
    }
    
	public String getLocation() {
        StringBuilder sb = new StringBuilder();
        if (fileName != null) {
        	sb.append("in file '").append(fileName).append("'").append(" ");
        }
        sb.append("on line ").append(lineNumber);
        sb.append(" ").append("at character ").append(characterNumber);
        return sb.toString();
    }
    
}